1
Mã là Dữ liệu: Bản chất Đồng cấu của Elixir
AI019Lesson 10
00:00

Bản chất Đồng cấu

Ngôn ngữ đồng cấu: Một ngôn ngữ mà biểu diễn nội bộ được thể hiện chính trong ngôn ngữ đó. Trong Elixir, mã nguồn không chỉ là văn bản; nó là một cấu trúc dữ liệu lồng ghép gọi là Cây cú pháp trừu tượng (AST).

1. Quy tắc biểu diễn logic

Elixir đơn giản hóa AST bằng cách biểu diễn các hằng cơ bản chính bằng chính chúng. Các nguyên tử, số, danh sách (kể cả danh sách khóa), nhị phân và cặp giá trị hai phần tử được biểu diễn bên trong mà không cần bao bọc phức tạp.

iex> quote do: [do: 1]
[do: 1]
iex> quote do: "binaries"
"binaries"

2. Cấu trúc bộ ba AST

Hầu hết các biến đổi mã đều tạo ra một bộ ba gồm ba thành phần: {tên_chức_năng, thông_tin_phụ, đối_số}. Ví dụ, một lời gọi hàm như 1 + 2 trở thành {:+, [line: 1], [1, 2]}. Điều này cho phép ngôn ngữ xử lý Mã là Dữ liệu.

3. Macro: Hoãn thực thi

Macro là "một cách hoãn việc thực thi các mệnh đề bằng cách chèn mã trở lại biểu diễn nội bộ của chương trình chúng ta." Trong khi các hàm chuẩn đánh giá tham số trước khi gọi, macro nhận được AST gốc, cho phép chèn logic trước khi biên dịch.

$$\text{Mã nguồn} \xrightarrow{\text{Quote}} \text{Bộ ba AST} \xrightarrow{\text{Macro}} \text{AST đã chuyển đổi}$$

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>